﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using UnityEditor;
using UnityEngine;
using XLua;

public class Entrance : MonoBehaviour
{

    private bool _init = false;
    private LuaEnv _luaEnv;
    public static List<LuaTable> lt = new List<LuaTable>();


    void Awake()
    {
        if (_init == false)
        {
            InitMgrs();
            _init = true;
        }
    }

    void Start()
    {
    }


    private void InitMgrs()
    {
        UICanvasMgr.Instance.Init();
        //UIPanelMgr.Instance.Enter(PanelA.Instance);
        //UIPanelMgr.Instance.Enter(PanelB.Instance);
        //UIPanelMgr.Instance.Leave();
        LuaService.Instance.Init();

        _luaEnv = LuaService.Instance.LuaEnv;
        LuaService.Instance.StartLua();
    }

//    private void OnGUI()
//    {
//        if (GUILayout.Button("赋值"))
//        {
//            TimeSample.Begin(1000000);
//            _luaEnv.DoString(@"
//                for i = 1,InteractionTimes do
//                    j = i;
//                end
//            ");
//            TimeSample.End();
//            for(int i = 1;i < 1000000; i++)
//            {
//                int j = i;
//            }
//            TimeSample.End();
//        }
//
//        if (GUILayout.Button("SetMeta"))
//        {
//            _luaEnv.DoString(@"
//                X = {};
//                Y = {};
//            ");
//            TimeSample.Begin(1000000);
//            _luaEnv.DoString(@"
//                for i = 1,InteractionTimes do
//                    setmetatable(X,Y)
//                end
//            ");
//            TimeSample.End();
//        }
//
//        if (GUILayout.Button("RawSet"))
//        {
//            _luaEnv.DoString(@"
//                GG = {X = {}};
//            ");
//            TimeSample.Begin(1000000);
//            MemorySample.Begin(1000000);
//            _luaEnv.DoString(@"
//                for i = 1,InteractionTimes do
//                    rawset(GG.X, 'Name'..i, 'name')
//                end
//            ");
//            TimeSample.End();
//            MemorySample.End();
//            _luaEnv.DoString(@"
//                for i = 1,InteractionTimes do
//                    rawset(GG.X, '1'..i, 'name')
//                end
//            ");
//            TimeSample.End();
//            MemorySample.End();
//        }
//
//        if (GUILayout.Button("COLLECT"))
//        {
//            System.GC.Collect();
//            System.GC.WaitForPendingFinalizers();
//            _luaEnv.DoString("GG = nil");
//            _luaEnv.DoString("collectgarbage('collect')");
//        }
//
//        if (GUILayout.Button("jiaochao2"))
//        {
//            LuaTable xxx = _luaEnv.NewTable();
//            for (int i = 0; i < 1000000; i++)
//            {
//                LuaTable child = _luaEnv.NewTable();
//                child.Set("Name"+i,"name");
//                xxx.Set("Childx" + i, child);
//                lt.Add(child);
//            }
//        }
//
//        if (GUILayout.Button("snapshot"))
//        {
//            _luaEnv.DoString(@"
//                local snapshot = require('snapshot');
//                collectgarbage('collect')
//                collectgarbage()
//                collectgarbage()
//                snapshot.genjson( 'D:\\SnapLog\\origin')
//            ");
//        }
//
//        if (GUILayout.Button("MEMDEBUG"))
//        {
//            DebugService.Instance.Start();
//        }
//    }

}
